﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StyleMVVM.DependencyInjection
{
	public static class IExportAssemblyConfigurationExtensions
	{
		/// <summary>
		/// This extension allows you export all classes implementing a specific interface in an aseembly
		/// </summary>
		/// <typeparam name="T">Interface to export</typeparam>
		/// <param name="exportAssemblyConfig"></param>
		/// <returns></returns>
		public static IExportAssemblyConfiguration ExportInterface<T>(this IExportAssemblyConfiguration exportAssemblyConfig)
		{
			return exportAssemblyConfig.ExportInterface(typeof(T));
		}

		/// <summary>
		/// This extension allows you to exclude a particular type from export
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="exportAssemblyConfig"></param>
		/// <returns></returns>
		public static IExportAssemblyConfiguration Excluding<T>(this IExportAssemblyConfiguration exportAssemblyConfig)
		{
			return exportAssemblyConfig.Excluding(typeof(T));
		}
	}
}